package com.wicket.okrdataassets.web.contorller;

import cn.hutool.core.bean.BeanUtil;
import com.github.pagehelper.Page;
import com.github.pagehelper.page.PageMethod;
import com.wicket.okrdataassets.biz.service.AlbumService;
import com.wicket.okrdataassets.biz.service.dto.req.*;
import com.wicket.okrdataassets.biz.service.dto.res.*;
import com.wicket.okrdataassets.common.ro.OkrResult;
import com.wicket.okrdataassets.common.util.CommonFunctionHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author ：
 * @date ：
 *
 *
 * @version 1.0
 */
@RestController
@RequestMapping("/dataassets/album/")
public class AlbumController {

  @Autowired
  AlbumService albumService;
/**
   * D8批量删专辑下文件
   */
    @PostMapping("batchDeleteFileOfAlbum")
    public OkrResult<BatchDeleteFileOfAlbumRespDto> batchDeleteFileOfAlbum(@RequestBody @Validated BatchDeleteFileOfAlbumReqDto reqDTO){
    return OkrResult.success(albumService.batchDeleteFileOfAlbum(reqDTO));
    }
/**
   * D8新增专辑(公共)
   */
    @PostMapping("addAlbumCom")
    public OkrResult<AddAlbumComRespDto> addAlbumCom(@RequestBody @Validated AddAlbumComReqDto reqDTO){
    return OkrResult.success(albumService.addAlbumCom(reqDTO));
    }
/**
   * D8修改专辑(公共)
   */
    @PostMapping("updateAlbumCom")
    public OkrResult<UpdateAlbumComRespDto> updateAlbumCom(@RequestBody @Validated UpdateAlbumComReqDto reqDTO){
    return OkrResult.success(albumService.updateAlbumCom(reqDTO));
    }
/**
   * D8新增专辑分享记录表
   */
    @PostMapping("addAlbumShareRec")
    public OkrResult<AddAlbumShareRecRespDto> addAlbumShareRec(@RequestBody @Validated AddAlbumShareRecReqDto reqDTO){
    return OkrResult.success(albumService.addAlbumShareRec(reqDTO));
    }
/**
   * D8新增专辑文件关系(公共)
   */
    @PostMapping("addAlbumFileRelationCom")
    public OkrResult<AddAlbumFileRelationComRespDto> addAlbumFileRelationCom(@RequestBody @Validated AddAlbumFileRelationComReqDto reqDTO){
    return OkrResult.success(albumService.addAlbumFileRelationCom(reqDTO));
    }
/**
   * D8修改专辑文件关系(公共)
   */
    @PostMapping("updateAlbumFileRelationCom")
    public OkrResult<UpdateAlbumFileRelationComRespDto> updateAlbumFileRelationCom(@RequestBody @Validated UpdateAlbumFileRelationComReqDto reqDTO){
    return OkrResult.success(albumService.updateAlbumFileRelationCom(reqDTO));
    }
/**
   * D8删除专辑(公共)
   */
    @PostMapping("deleteAlbumCom")
    public OkrResult<DeleteAlbumComRespDto> deleteAlbumCom(@RequestBody @Validated DeleteAlbumComReqDto reqDTO){
    return OkrResult.success(albumService.deleteAlbumCom(reqDTO));
    }
/**
   * D8查询专辑详情(公共)
   */
    @PostMapping("queryAlbumDetailCom")
    public OkrResult<QueryAlbumDetailComRespDto> queryAlbumDetailCom(@RequestBody @Validated QueryAlbumDetailComReqDto reqDTO){
    return OkrResult.success(albumService.queryAlbumDetailCom(reqDTO));
    }
/**
   * D8删除专辑文档关系(公共)
   */
    @PostMapping("deleteAlbumFileRelationCom")
    public OkrResult<DeleteAlbumFileRelationComRespDto> deleteAlbumFileRelationCom(@RequestBody @Validated DeleteAlbumFileRelationComReqDto reqDTO){
    return OkrResult.success(albumService.deleteAlbumFileRelationCom(reqDTO));
    }
/**
   * D8查询专辑列表(公共)
   */
    @PostMapping("queryAlbumListCom")
    public OkrResult<QueryAlbumListComRespDto> queryAlbumListCom(@RequestBody @Validated QueryAlbumListComReqDto reqDTO){
    return OkrResult.success(albumService.queryAlbumListCom(reqDTO));
    }
/**
   * D8查询专辑文件关系列表(公共)
   */
    @PostMapping("queryAlbumFileRelationListCom")
    public OkrResult<QueryAlbumFileRelationListComRespDto> queryAlbumFileRelationListCom(@RequestBody @Validated QueryAlbumFileRelationListComReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryAlbumFileRelationListComRespDto retData = albumService.queryAlbumFileRelationListCom(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);

    }
/**
   * D8批量查询专辑(公共)
   */
    @PostMapping("batchQueryAlbumCom")
    public OkrResult<BatchQueryAlbumComRespDto> batchQueryAlbumCom(@RequestBody @Validated BatchQueryAlbumComReqDto reqDTO){
    return OkrResult.success(albumService.batchQueryAlbumCom(reqDTO));
    }
/**
   * D8查询专辑分享记录表列表(公共)
   */
    @PostMapping("queryAlbumShareRecListCom")
    public OkrResult<QueryAlbumShareRecListComRespDto> queryAlbumShareRecListCom(@RequestBody @Validated QueryAlbumShareRecListComReqDto reqDTO){
    return OkrResult.success(albumService.queryAlbumShareRecListCom(reqDTO));
    }
/**
   * D8修改专辑分享记录表
   */
    @PostMapping("updateAlbumShareRec")
    public OkrResult<UpdateAlbumShareRecRespDto> updateAlbumShareRec(@RequestBody @Validated UpdateAlbumShareRecReqDto reqDTO){
    return OkrResult.success(albumService.updateAlbumShareRec(reqDTO));
    }
/**
   * D8查询专辑文件关系详情(公共)
   */
    @PostMapping("queryAlbumFileRelationDetailCom")
    public OkrResult<QueryAlbumFileRelationDetailComRespDto> queryAlbumFileRelationDetailCom(@RequestBody @Validated QueryAlbumFileRelationDetailComReqDto reqDTO){
    return OkrResult.success(albumService.queryAlbumFileRelationDetailCom(reqDTO));
    }
/**
   * D8查询分享的专辑列表(公共)
   */
    @PostMapping("querySharedAlbumListCom")
    public OkrResult<QuerySharedAlbumListComRespDto> querySharedAlbumListCom(@RequestBody @Validated QuerySharedAlbumListComReqDto reqDTO){
    return OkrResult.success(albumService.querySharedAlbumListCom(reqDTO));
    }
/**
   * D8查询个人或部门的专辑列表
   */
    @PostMapping("queryPersonOrDeptAlbumList")
    public OkrResult<QueryPersonOrDeptAlbumListRespDto> queryPersonOrDeptAlbumList(@RequestBody @Validated QueryPersonOrDeptAlbumListReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryPersonOrDeptAlbumListRespDto retData = albumService.queryPersonOrDeptAlbumList(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }
/**
   * D8批量查询个人或部门名称
   */
    @PostMapping("batchQueryPersonOrDeptName")
    public OkrResult<BatchQueryPersonOrDeptNameRespDto> batchQueryPersonOrDeptName(@RequestBody @Validated BatchQueryPersonOrDeptNameReqDto reqDTO){
    return OkrResult.success(albumService.batchQueryPersonOrDeptName(reqDTO));
    }
/**
   * D8查询回收站列表
   */
    @PostMapping("queryRecycleList")
    public OkrResult<QueryRecycleListRespDto> queryRecycleList(@RequestBody @Validated QueryRecycleListReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryRecycleListRespDto retData = albumService.queryRecycleList(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }
/**
   * D8删除专辑下文件(公共)
   */
    @PostMapping("deleteFileOfAlbumCom")
    public OkrResult<DeleteFileOfAlbumComRespDto> deleteFileOfAlbumCom(@RequestBody @Validated DeleteFileOfAlbumComReqDto reqDTO){
    return OkrResult.success(albumService.deleteFileOfAlbumCom(reqDTO));
    }
/**
   * D8查询专辑名称重复详情(公共)
   */
    @PostMapping("queryDuplicateAlbumNameDetailCom")
    public OkrResult<QueryDuplicateAlbumNameDetailComRespDto> queryDuplicateAlbumNameDetailCom(@RequestBody @Validated QueryDuplicateAlbumNameDetailComReqDto reqDTO){
    return OkrResult.success(albumService.queryDuplicateAlbumNameDetailCom(reqDTO));
    }
/**
   * D8复制专辑
   */
    @PostMapping("copyAlbum")
    public OkrResult<CopyAlbumRespDto> copyAlbum(@RequestBody @Validated CopyAlbumReqDto reqDTO){
    return OkrResult.success(albumService.copyAlbum(reqDTO));
    }
/**
   * D8移除专辑下文件
   */
    @PostMapping("removeFileOfAlbum")
    public OkrResult<RemoveFileOfAlbumRespDto> removeFileOfAlbum(@RequestBody @Validated RemoveFileOfAlbumReqDto reqDTO){
    return OkrResult.success(albumService.removeFileOfAlbum(reqDTO));
    }
/**
   * D8批量增专辑文件关系(公共)
   */
    @PostMapping("batchAddAlbumFileRelationCom")
    public OkrResult<BatchAddAlbumFileRelationComRespDto> batchAddAlbumFileRelationCom(@RequestBody @Validated BatchAddAlbumFileRelationComReqDto reqDTO){
    return OkrResult.success(albumService.batchAddAlbumFileRelationCom(reqDTO));
    }
/**
   * D8执行新增文件及专辑文件关系
   */
    @PostMapping("implementAlbumFileRelation")
    public OkrResult<ImplementAlbumFileRelationRespDto> implementAlbumFileRelation(@RequestBody @Validated ImplementAlbumFileRelationReqDto reqDTO){
    return OkrResult.success(albumService.implementAlbumFileRelation(reqDTO));
    }
/**
   * D8修改存档专辑操作
   */
    @PostMapping("updateArchiveAlbumOper")
    public OkrResult<UpdateArchiveAlbumOperRespDto> updateArchiveAlbumOper(@RequestBody @Validated UpdateArchiveAlbumOperReqDto reqDTO){
    return OkrResult.success(albumService.updateArchiveAlbumOper(reqDTO));
    }
/**
   * D8新增专辑文件关系
   */
    @PostMapping("loopAddAlbumFileRelation")
    public OkrResult<LoopAddAlbumFileRelationRespDto> loopAddAlbumFileRelation(@RequestBody @Validated LoopAddAlbumFileRelationReqDto reqDTO){
    return OkrResult.success(albumService.loopAddAlbumFileRelation(reqDTO));
    }
/**
   * D8初始化默认专辑(公共)
   */
    @PostMapping("initDefaultAlbumCom")
    public OkrResult<InitDefaultAlbumComRespDto> initDefaultAlbumCom(@RequestBody @Validated InitDefaultAlbumComReqDto reqDTO){
    return OkrResult.success(albumService.initDefaultAlbumCom(reqDTO));
    }
/**
   * D8移动文件到指定专辑
   */
    @PostMapping("moveFilesToSpecAlbum")
    public OkrResult<MoveFilesToSpecAlbumRespDto> moveFilesToSpecAlbum(@RequestBody @Validated MoveFilesToSpecAlbumReqDto reqDTO){
    return OkrResult.success(albumService.moveFilesToSpecAlbum(reqDTO));
    }
/**
   * D8复制文件到指定专辑
   */
    @PostMapping("copyFilesToSpecAlbum")
    public OkrResult<CopyFilesToSpecAlbumRespDto> copyFilesToSpecAlbum(@RequestBody @Validated CopyFilesToSpecAlbumReqDto reqDTO){
    return OkrResult.success(albumService.copyFilesToSpecAlbum(reqDTO));
    }
/**
   * D8查询专辑文件关系详情(通用)（公共）
   */
    @PostMapping("queryAlbumFileRelationDetailCommonCom")
    public OkrResult<QueryAlbumFileRelationDetailCommonComRespDto> queryAlbumFileRelationDetailCommonCom(@RequestBody @Validated QueryAlbumFileRelationDetailCommonComReqDto reqDTO){
    return OkrResult.success(albumService.queryAlbumFileRelationDetailCommonCom(reqDTO));
    }
/**
   * D8新增默认专辑(公共)
   */
    @PostMapping("addDefaultAlbumCom")
    public OkrResult<AddDefaultAlbumComRespDto> addDefaultAlbumCom(@RequestBody @Validated AddDefaultAlbumComReqDto reqDTO){
    return OkrResult.success(albumService.addDefaultAlbumCom(reqDTO));
    }
/**
   * D8分析专辑归属对象ID(公共)
   */
    @PostMapping("analyzeAlbumOwnershipId")
    public OkrResult<AnalyzeAlbumOwnershipIdRespDto> analyzeAlbumOwnershipId(@RequestBody @Validated AnalyzeAlbumOwnershipIdReqDto reqDTO){
    return OkrResult.success(albumService.analyzeAlbumOwnershipId(reqDTO));
    }
/**
   * D8移除专辑下文件(公共)
   */
    @PostMapping("removeFileOfAlbumCom")
    public OkrResult<RemoveFileOfAlbumComRespDto> removeFileOfAlbumCom(@RequestBody @Validated RemoveFileOfAlbumComReqDto reqDTO){
    return OkrResult.success(albumService.removeFileOfAlbumCom(reqDTO));
    }
/**
   * D8批量移除专辑下文件
   */
    @PostMapping("updateAlbumFilesRelationCom")
    public OkrResult<UpdateAlbumFilesRelationComRespDto> updateAlbumFilesRelationCom(@RequestBody @Validated UpdateAlbumFilesRelationComReqDto reqDTO){
    return OkrResult.success(albumService.updateAlbumFilesRelationCom(reqDTO));
    }
/**
   * D8批量存档专辑下文件
   */
    @PostMapping("batchArchiveAlbumFileRelation")
    public OkrResult<BatchArchiveAlbumFileRelationRespDto> batchArchiveAlbumFileRelation(@RequestBody @Validated BatchArchiveAlbumFileRelationReqDto reqDTO){
    return OkrResult.success(albumService.batchArchiveAlbumFileRelation(reqDTO));
    }

    /**
     * D8查询专辑下文件详情(公共)
     */
    @PostMapping("queryFileOfAlbumDetailCom")
    public OkrResult<QueryFileOfAlbumDetailComRespDto> queryFileOfAlbumDetailCom(@RequestBody @Validated QueryFileOfAlbumDetailComReqDto reqDTO){
        return OkrResult.success(albumService.queryFileOfAlbumDetailCom(reqDTO));
    }

/**
   * D8执行丢回收站(公共)
   */
    @PostMapping("implementRecycleCom")
    public OkrResult<ImplementRecycleComRespDto> implementRecycleCom(@RequestBody @Validated ImplementRecycleComReqDto reqDTO){
    return OkrResult.success(albumService.implementRecycleCom(reqDTO));
    }
/**
   * D8批量删专辑文件关系(公共)
   */
    @PostMapping("batchDeleteAlbumFileRelationCom")
    public OkrResult<BatchDeleteAlbumFileRelationComRespDto> batchDeleteAlbumFileRelationCom(@RequestBody @Validated BatchDeleteAlbumFileRelationComReqDto reqDTO){
    return OkrResult.success(albumService.batchDeleteAlbumFileRelationCom(reqDTO));
    }
}
